#include<stdio.h>
#include<stdlib.h>

typedef struct node{
	int d;
	struct node* n;
}node;

node* in(int d){
	node* n=(node*)malloc(sizeof(node));
	n->d=d;
	n->n=NULL;
}

node* iq(){
	node* q=in(0);
	return q;
}

int ie(node* q){
	return q->d==0||q->n==NULL;
}

void inq(node* q,int d){
	node* n=in(d);
	node* cur=q->n;
	while(cur!=NULL && cur->n !=NULL){
		cur=cur->n;
	}
	cur->n=n;
	q->d++;
}

int oq(node*q){
	if(ie(q)){
		return -1;
	}else{
		node* cur=q->n;
		int ret=cur->d;
		q->n=cur->n;
		free(cur);
		q->d--;
		return ret;
	}
}

void pq(node*q){
	node* cur=q->n;
	while(cur){
		printf("%d ",cur->d);
		cur=cur->n;
	}
	printf("\n");
}

int main(){
	node* q=iq();
	inq(q,1);
	inq(q,2);
	inq(q,3);
	inq(q,4);
	inq(q,5);
	pq(q);
	int ret=oq(q);
	printf("ret is:%d\n",ret);
	pq(q);
}













